package com.example.leetcode.linklist;

import java.util.ArrayList;
import java.util.List;

/**
 * 回文链表
 * <p>
 * 给你一个单链表的头节点 head ，请你判断该链表是否为回文链表。如果是，返回 true ；否则，返回 false 。
 * 回文 序列是向前和向后读都相同的序列。
 * 输入：head = [1,2,2,1]
 * 输出：true
 */
public class IsPalindrome {
    public static void main(String[] args) {

    }

    public boolean isPalindrome(ListNode head) {
        List<Integer> list = new ArrayList<>();

        // 链表添加到集合中
        ListNode current = head;
        while (current != null) {
            list.add(current.val);
            current = current.next;
        }

        // 双指针
        Integer left = 0;
        Integer right = list.size() - 1;

        while (left <right) {
            if (list.get(left) != list.get(right)) {
                return false;
            }
            left++;
            right--;
        }

        return true;
    }
}
